package mine.code.day.year2021.month09;

import org.junit.Test;

/**
 * 在一个 平衡字符串 中，'L' 和 'R' 字符的数量是相同的。
 * <p>
 * 给你一个平衡字符串s，请你将它分割成尽可能多的平衡字符串。
 * <p>
 * 注意：分割得到的每个字符串都必须是平衡字符串。
 * <p>
 * 返回可以通过分割得到的平衡字符串的 最大数量 。
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "RLRRLLRLRL"
 * 输出：4
 * 解释：s 可以分割为 "RL"、"RRLL"、"RL"、"RL" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 * <p>
 * 示例 2：
 * <p>
 * 输入：s = "RLLLLRRRLR"
 * 输出：3
 * 解释：s 可以分割为 "RL"、"LLLRRR"、"LR" ，每个子字符串中都包含相同数量的 'L' 和 'R' 。
 * <p>
 * 示例 3：
 * <p>
 * 输入：s = "LLLLRRRR"
 * 输出：1
 * 解释：s 只能保持原样 "LLLLRRRR".
 * <p>
 * 示例 4：
 * <p>
 * 输入：s = "RLRRRLLRLL"
 * 输出：2
 * 解释：s 可以分割为 "RL"、"RRRLLRLL" ，每个子字符串中都包含相同数量的 'L' 和 'R'
 *
 * @author caijinnan
 */
public class Day07_分割平衡字符串 {


    @Test
    public void run() {
        System.out.println(balancedStringSplit("RLRRLLRLRL"));
    }

    public int balancedStringSplit(String s) {
        char[] chars = s.toCharArray();
        int rNum = 1;
        int lNum = -1;
        int result = 0;
        int sum = 0;
        for (char tempChar : chars) {
            int num = tempChar == 'R' ? rNum : lNum;
            sum += num;
            if(sum==0){
                result++;
            }
        }
        return result;
    }
}
